package br.edu.uepb.nutes.model.factory;

import br.edu.uepb.nutes.entities.Autor;
import br.edu.uepb.nutes.entities.Endereco;
import br.edu.uepb.nutes.entities.HistoricoClinico;
import br.edu.uepb.nutes.entities.Organizacao;
import br.edu.uepb.nutes.entities.Paciente;
import br.edu.uepb.nutes.entities.dadospessoais.DadosPessoais;
import br.edu.uepb.nutes.entities.dadospessoais.EnderecoDeTrabalho;
import br.edu.uepb.nutes.entities.dadospessoais.EnderecoResidencial;
import br.edu.uepb.nutes.entities.dadospessoais.Responsavel;
import br.edu.uepb.nutes.entities.enums.dados.endereco.TipoDeEndereco;
import br.edu.uepb.nutes.model.DocumentoClinico;
import br.edu.uepb.nutes.model.Registro;

public class CCDA_HistoryAndPhysicalNoteFactory {
	
	public static CCDA_HistoryAndPhysicalNoteFactory INSTANCE = new CCDA_HistoryAndPhysicalNoteFactory();; 
	
	private CCDA_HistoryAndPhysicalNoteFactory() {
			
	}	
	
	public Endereco criarEndereco(String tipo) {
		
		if(tipo.contains(TipoDeEndereco.RESIDENCIAL.code())) {
			return new EnderecoResidencial();
		} else if(tipo.contains(TipoDeEndereco.TRABALHO.code())) {
			return new EnderecoDeTrabalho();	
		}		
			return new Endereco();
		
	}
	
	public Responsavel criarResponsavel () {
		return new Responsavel();
	}
	
	//-----------------------------------------------------//
	
	public DadosPessoais criarDadosPessoais() {
		return new DadosPessoais();
	}
	public HistoricoClinico criarHistoricoClinico() {
		return new HistoricoClinico();
	}
	
	//----------------------------------------------------//
	
	public Autor criarAutor() {
		return new Autor();		
	}	
	
	public Paciente criarPaciente() {
		return new Paciente();
	}
	
	public Organizacao criarOrganizacao() {
		return new Organizacao();
	}
	
	//----------------------------------------------------//
	
	public Registro criarEncontro() {
		return new Registro();
	}
	
	//---------------------------------------------------//
	
	public DocumentoClinico criarDocumentoClinico(Registro encontro) {
		return new DocumentoClinico(encontro);
	}
	
	

}
